using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.Xml.Serialization;

namespace ibba.src.norisk.Contracts
{
    [DataContract]
    public class DeParaTipoLimite
    {
        public enum TipoAcao
        {
            INCLUSAO,
            EXCLUSAO,
            NONE
        }

        public enum TipoEstado
        {
            NOVO,
            ANTIGO
        }

        [DataMember]
        [XmlAttribute("CodTipoLimite")]
        public int CodTipoLimite { get; set; }

        [DataMember]
        [XmlAttribute("CodDePara")]
        public int CodDePara { get; set; }

        [DataMember]
        [XmlAttribute("Codigo")]
        public string Codigo { get; set; }

        [DataMember]
        [XmlAttribute("Descricao")]
        public string Descricao { get; set; }

        [DataMember]
        public TipoAcao Acao { get; set; }

        [DataMember]
        public TipoEstado Estado { get; set; }

        [DataMember]
        [XmlAttribute("CodUsuarioInclusao")]
        public string CodUsuarioInclusao { get; set; }
    }

    [DataContract]
    public class TipoLimite
    {
        [DataMember]
        [XmlAttribute("CodTipoLimite")]
        public int CodTipoLimite { get; set; }

        [DataMember]
        [XmlAttribute("DscTipoLimite")]
        public string DscTipoLimite { get; set; }

        [DataMember]
        [XmlIgnore]
        public bool Ativo { get; set; }

        [DataMember]        
        public List<ProdutoItau> ProdutosItau { get; set; }

        [DataMember]        
        public List<Estrategia> Estrategias { get; set; }

        [DataMember]
        public List<AreaInstitucional> AreasInstitucionais { get; set; }
    }

    [DataContract]
    public class ProdutoItau : DeParaTipoLimite
    { }

    [DataContract]
    public class Estrategia : DeParaTipoLimite
    { }

    [DataContract]
    public class AreaInstitucional : DeParaTipoLimite
    { }
}
